package br.com.sg5.model.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.dphibernate.core.HibernateProxy;



@Entity
@Table(name="CGREMP0")
public class Empresa extends HibernateProxy{
	
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE)
	@Column (name = "EMP_COD",nullable=false)	
	private Integer em_codigo;
	
	@Column(name="EMP_NOMEFANTAS", nullable =true)  
	private String em_nfantasia;
	
	@Column(name="EMP_NOME", nullable =true)  
	private String em_nome;
	
	@Column(name="EMP_FONE", nullable =true)  
	private String em_fone;
	
	@Column(name="EMP_FAX", nullable =true)  
	private String em_fax;
	
	@Column(name="EMP_CNPJ", nullable =true)  
	private String em_cnpj_cpf;
	
	@Column(name="EMP_INSCEST", nullable =true)  
	private String em_insc_est;
	
	@Column(name="EMP_INSCMUNIC", nullable =true)  
	private String em_insc_municip;
	
	@Column(name="EMP_CODFPAS", nullable =true)  
	private String em_codfpas;
	
	@Column(name="EMP_NATJURIDIC", nullable =true)  
	private String em_nat_juridic;
	
	@Column(name="EMP_CNAE", nullable =true)  
	private String em_cnae;
	
	@Column(name="EMP_CODACIDTRAB", nullable =true)  
	private String em_codacid_trab;
	
	@Column(name="EMP_NROPROPRI", nullable =true)  
	private Integer em_nro_prop;
	
	@Column(name="EMP_CODATIVID", nullable =true)  
	private String em_cod_ativ;
	
	@Column(name="EMP_SUFRAMA", nullable =true)  
	private String em_insc_suframa;
	
	@Column(name="EMP_RNTRC", nullable =true)  
	private String em_rntrc;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="USU_COD",referencedColumnName = "USU_COD")	
	private Usuario usuario;
	
    @ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="MUN_COD", referencedColumnName = "MUN_COD")
	private Municipio municipio;


	@Override
	public Object getProxyKey() {
		return em_codigo;
	}


	@Override
	public void setProxyKey(Object arg0) {
		throw new RuntimeException("ProxyKey is somente leitura!");
	}
	
	
	
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((em_cnae == null) ? 0 : em_cnae.hashCode());
		result = prime * result
				+ ((em_cnpj_cpf == null) ? 0 : em_cnpj_cpf.hashCode());
		result = prime * result
				+ ((em_cod_ativ == null) ? 0 : em_cod_ativ.hashCode());
		result = prime * result
				+ ((em_codacid_trab == null) ? 0 : em_codacid_trab.hashCode());
		result = prime * result
				+ ((em_codfpas == null) ? 0 : em_codfpas.hashCode());
		result = prime * result
				+ ((em_codigo == null) ? 0 : em_codigo.hashCode());
		result = prime * result + ((em_fax == null) ? 0 : em_fax.hashCode());
		result = prime * result + ((em_fone == null) ? 0 : em_fone.hashCode());
		result = prime * result
				+ ((em_insc_est == null) ? 0 : em_insc_est.hashCode());
		result = prime * result
				+ ((em_insc_municip == null) ? 0 : em_insc_municip.hashCode());
		result = prime * result
				+ ((em_insc_suframa == null) ? 0 : em_insc_suframa.hashCode());
		result = prime * result
				+ ((municipio == null) ? 0 : municipio.hashCode());
		result = prime * result
				+ ((em_nat_juridic == null) ? 0 : em_nat_juridic.hashCode());
		result = prime * result
				+ ((em_nfantasia == null) ? 0 : em_nfantasia.hashCode());
		result = prime * result + ((em_nome == null) ? 0 : em_nome.hashCode());
		result = prime * result
				+ ((em_nro_prop == null) ? 0 : em_nro_prop.hashCode());
		result = prime * result
				+ ((em_rntrc == null) ? 0 : em_rntrc.hashCode());
		result = prime * result
				+ ((usuario == null) ? 0 : usuario.hashCode());
		return result;
	}

	
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Empresa other = (Empresa) obj;
		if (em_cnae == null) {
			if (other.em_cnae != null)
				return false;
		} else if (!em_cnae.equals(other.em_cnae))
			return false;
		if (em_cnpj_cpf == null) {
			if (other.em_cnpj_cpf != null)
				return false;
		} else if (!em_cnpj_cpf.equals(other.em_cnpj_cpf))
			return false;
		if (em_cod_ativ == null) {
			if (other.em_cod_ativ != null)
				return false;
		} else if (!em_cod_ativ.equals(other.em_cod_ativ))
			return false;
		if (em_codacid_trab == null) {
			if (other.em_codacid_trab != null)
				return false;
		} else if (!em_codacid_trab.equals(other.em_codacid_trab))
			return false;
		if (em_codfpas == null) {
			if (other.em_codfpas != null)
				return false;
		} else if (!em_codfpas.equals(other.em_codfpas))
			return false;
		if (em_codigo == null) {
			if (other.em_codigo != null)
				return false;
		} else if (!em_codigo.equals(other.em_codigo))
			return false;
		if (em_fax == null) {
			if (other.em_fax != null)
				return false;
		} else if (!em_fax.equals(other.em_fax))
			return false;
		if (em_fone == null) {
			if (other.em_fone != null)
				return false;
		} else if (!em_fone.equals(other.em_fone))
			return false;
		if (em_insc_est == null) {
			if (other.em_insc_est != null)
				return false;
		} else if (!em_insc_est.equals(other.em_insc_est))
			return false;
		if (em_insc_municip == null) {
			if (other.em_insc_municip != null)
				return false;
		} else if (!em_insc_municip.equals(other.em_insc_municip))
			return false;
		if (em_insc_suframa == null) {
			if (other.em_insc_suframa != null)
				return false;
		} else if (!em_insc_suframa.equals(other.em_insc_suframa))
			return false;
		if (municipio == null) {
			if (other.municipio != null)
				return false;
		} else if (!municipio.equals(other.municipio))
			return false;
		if (em_nat_juridic == null) {
			if (other.em_nat_juridic != null)
				return false;
		} else if (!em_nat_juridic.equals(other.em_nat_juridic))
			return false;
		if (em_nfantasia == null) {
			if (other.em_nfantasia != null)
				return false;
		} else if (!em_nfantasia.equals(other.em_nfantasia))
			return false;
		if (em_nome == null) {
			if (other.em_nome != null)
				return false;
		} else if (!em_nome.equals(other.em_nome))
			return false;
		if (em_nro_prop == null) {
			if (other.em_nro_prop != null)
				return false;
		} else if (!em_nro_prop.equals(other.em_nro_prop))
			return false;
		if (em_rntrc == null) {
			if (other.em_rntrc != null)
				return false;
		} else if (!em_rntrc.equals(other.em_rntrc))
			return false;
		if (usuario == null) {
			if (other.usuario != null)
				return false;
		} else if (!usuario.equals(other.usuario))
			return false;
		return true;
	}

	
	@Override
	public String toString() {
		return "Empresa [em_codigo=" + em_codigo + ", em_nfantasia="
				+ em_nfantasia + ", em_nome=" + em_nome + ", em_fone="
				+ em_fone + ", em_fax=" + em_fax + ", em_cnpj_cpf="
				+ em_cnpj_cpf + ", em_insc_est=" + em_insc_est
				+ ", em_insc_municip=" + em_insc_municip + ", em_codfpas="
				+ em_codfpas + ", em_nat_juridic=" + em_nat_juridic
				+ ", em_cnae=" + em_cnae + ", em_codacid_trab="
				+ em_codacid_trab + ", em_nro_prop=" + em_nro_prop
				+ ", em_cod_ativ=" + em_cod_ativ + ", em_insc_suframa="
				+ em_insc_suframa + ", em_rntrc=" + em_rntrc + ", em_usuario="
				+ usuario + ", em_municipio=" + municipio + "]";
	}

	public Integer getEm_codigo() {
		return em_codigo;
	}

	public void setEm_codigo(Integer em_codigo) {
		this.em_codigo = em_codigo;
	}

	public String getEm_nfantasia() {
		return em_nfantasia;
	}

	public void setEm_nfantasia(String em_nfantasia) {
		this.em_nfantasia = em_nfantasia;
	}

	public String getEm_nome() {
		return em_nome;
	}

	public void setEm_nome(String em_nome) {
		this.em_nome = em_nome;
	}

	public String getEm_fone() {
		return em_fone;
	}

	public void setEm_fone(String em_fone) {
		this.em_fone = em_fone;
	}

	public String getEm_fax() {
		return em_fax;
	}

	public void setEm_fax(String em_fax) {
		this.em_fax = em_fax;
	}

	public String getEm_cnpj_cpf() {
		return em_cnpj_cpf;
	}

	public void setEm_cnpj_cpf(String em_cnpj_cpf) {
		this.em_cnpj_cpf = em_cnpj_cpf;
	}

	public String getEm_insc_est() {
		return em_insc_est;
	}

	public void setEm_insc_est(String em_insc_est) {
		this.em_insc_est = em_insc_est;
	}

	public String getEm_insc_municip() {
		return em_insc_municip;
	}

	public void setEm_insc_municip(String em_insc_municip) {
		this.em_insc_municip = em_insc_municip;
	}

	public String getEm_codfpas() {
		return em_codfpas;
	}

	public void setEm_codfpas(String em_codfpas) {
		this.em_codfpas = em_codfpas;
	}

	public String getEm_nat_juridic() {
		return em_nat_juridic;
	}

	public void setEm_nat_juridic(String em_nat_juridic) {
		this.em_nat_juridic = em_nat_juridic;
	}

	public String getEm_cnae() {
		return em_cnae;
	}

	public void setEm_cnae(String em_cnae) {
		this.em_cnae = em_cnae;
	}

	public String getEm_codacid_trab() {
		return em_codacid_trab;
	}

	public void setEm_codacid_trab(String em_codacid_trab) {
		this.em_codacid_trab = em_codacid_trab;
	}

	public Integer getEm_nro_prop() {
		return em_nro_prop;
	}

	public void setEm_nro_prop(Integer em_nro_prop) {
		this.em_nro_prop = em_nro_prop;
	}

	public String getEm_cod_ativ() {
		return em_cod_ativ;
	}

	public void setEm_cod_ativ(String em_cod_ativ) {
		this.em_cod_ativ = em_cod_ativ;
	}

	public String getEm_insc_suframa() {
		return em_insc_suframa;
	}

	public void setEm_insc_suframa(String em_insc_suframa) {
		this.em_insc_suframa = em_insc_suframa;
	}

	public String getEm_rntrc() {
		return em_rntrc;
	}

	public void setEm_rntrc(String em_rntrc) {
		this.em_rntrc = em_rntrc;
	}

	public Municipio getMunicipio() {
		return municipio;
	}


	public void setMunicipio(Municipio municipio) {
		this.municipio = municipio;
	}


	public Usuario getUsuario() {
		return usuario;
	}


	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}



	
	

}
